package com.huayi.datagovernance.dao.master;


import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huayi.datagovernance.common.SysConstant;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 通用dao
 */
@DS(SysConstant.DBSOURCE_POSTGRESQL)
public interface TYDao {

    /**
     * 获取偏移量数据
     * @date 2021/4/21 21:12
     * @param
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     */
    List<Map<String,Object>> queryOffSet();

    /**
     * 初始化查询的设备表（根据工单类型）
     * @date 2021/4/21 21:12
     * @param gdtype 工单类型
     * @return java.util.List<java.util.Map>
     */
    List<JSONObject> getTableList(int gdtype);

    /**
     * 根据字段获取此字段需要的设备列表
     * @date 2021/4/25 16:00
     * @param field
     * @return java.util.List<java.util.Map>
     */
    List<Map> getOptionsByField(@Param("field")String field);

    /**
     *  查找设备类型对应图形表等信息
     * @param zwtype
     * @param sbzlx
     * @return
     */
    Map<String,Object> getModelNameByType(@Param("zwtype") String zwtype, @Param("sbzlx") String sbzlx);

    /**
     * 根据图形表名获取台账表名
     * @param modelName
     * @return
     */
    String getTableNameByModelName(@Param("modelName")String modelName);

    /**
     * 查询台账数据
     * @param modelName
     * @return
     */
    JSONObject getTzData(@Param("modelName")String modelName, @Param("sbid") String sbid);

    /**
     * 根据表名获取台账字段
     * @param tableName
     * @return
     */
    List<Map> getFieldFormTablename(@Param("tableName")String tableName);

    /**
     * 根据表序列名 获取随机OID-dwzy
     * @param tableName
     * @return
     */
    long getUUOID(@Param("tableName") String tableName);

    /**
     * 根据台账表名查找sblx编码
     * @param sbzlx
     * @return
     */
    Map<String,Object> getSblxInfoBySbzlx(@Param("sbzlx")String sbzlx);

    /**
     * 获取表字段
     * @param classid
     * @return
     */
    List<JSONObject> getTxFieldByClassid(@Param("classid")String classid,@Param("modelid")String modelid);

    /**
     * 获取字段value值
     * @param queryWrapper
     * @return
     */
    List<JSONObject> getFieldValueBySql(@Param("ew") QueryWrapper queryWrapper);
}
